
=begin
  1. Dado um vetor de entrada, produzir um novo vetor sem elementos repetidos.
  Ex.: [1,5,7,4,7,3,1,4,5] → [1,5,7,4,3]
=end
def remove_twin vector
	sem_repetido = Array.new
  vector.each_index do |index|
    unless sem_repetido.include?(vector[index])
      sem_repetido << vector[index]
    end
  end
  sem_repetido
end

=begin
  2. Dado um vector de entrada, saber quantas vezes cada elemento se repete.
  Ex.: [1,5,7,4,7,3,1,4,5] → [1,5,7,4,3] → [2,2,2,2,2,1]
=end
def count_twin vector
	sem_repetido = remove_twin(vector)
  count_occu = Array.new
  sem_repetido.each do |vect|
    count = 0
    vector.each { |v| count += 1 if vect == v }
    count_occu.push(count)
  end
  return count_occu
end

=begin
  3. Crie um vetor formado pelo valor num vetor de entrada e o numero de vezes que ele aparece.
  Ex.: [1,2,3,1,3,3] → [[1,2], [2,1], [3,3]]
=end
def remove_twin_count vector
	sem_repetido = remove_twin(vector)
  count_occu = count_twin(vector)
  v_all = Array.new
  sem_repetido.each_index do |index|
    v_one = Array.new
    v_one.push(sem_repetido[index], count_occu[index])
    v_all.push(v_one)
  end
  v_all
end

begin
  puts "Digite a questão: [1 - 2 - 3]"
  opcao = gets
  vector = Array.new
  10.times do
    vector.push(rand(10))
  end
  case opcao.to_i
  when 1
    puts "Vector sem elemetos repetidos."
    puts "Gerando vector..."
    v = remove_twin(vector)
    puts "Vector Original"
    p vector
    puts "Vector Sem Repetidos"
    p v
  when 2
    puts "Vector sem elemetos repetidos."
    puts "Gerando vector..."
    v_count = count_twin(vector)
    puts "Vector Original"
    p vector
    puts "Vector Num. Ocorrencias"
    p v_count
  when 3
    v_all = remove_twin_count(vector)
    puts "Vector Original"
    p vector
    puts "Vector Num. Ocorrencias"
    p v_all
  end
rescue Exception => ex
  exit 1
end